package ar.edu.utn.frba.dds.opendesigners.user;

import ar.edu.utn.frba.dds.opendesigners.ParametroBusqueda;
import ar.edu.utn.frba.dds.opendesigners.AgenteDeViaje;
import ar.edu.utn.frba.dds.opendesigners.excepciones.ExcepcionCompraAsiento;
import ar.edu.utn.frba.dds.opendesigners.excepciones.ExcepcionNegocio;
import ar.edu.utn.frba.dds.opendesigners.reservas.Reservas;
import ar.edu.utn.frba.dds.opendesigners.resultados.ResultadoBusqueda;
import ar.edu.utn.frba.dds.opendesigners.resultados.Asiento;

public class Vip implements Suscripcion {
	public AgenteDeViaje agenteDeViaje;
	private Reservas reserva;
	
	public Vip() {
		this.agenteDeViaje = AgenteDeViaje.getInstance();
		this.reserva = Reservas.getInstance();
	}
	
	@Override
	public ResultadoBusqueda buscar(ParametroBusqueda parametroBusqueda) {
		return parametroBusqueda.buscar(); 
	}

	@Override
	public void comprar(Asiento asiento){
		try {
			asiento.comprar();	
		} catch (ExcepcionCompraAsiento fallaCompraAsiento) {
			throw new ExcepcionNegocio("No se pudo comprar el asiento");
		}
	}
	@Override
	public void reservar (Asiento asiento, Usuario usuario){
		this.reserva.reservar(asiento, usuario);
	}
}
